package com.example.houseman.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 
 * </p>
 *
 * @author 龚梦
 * @since 2021-03-30
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class TCfContract implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 出房合同编号（系统生成）
     */
    private String cfContractNo;

    /**
     * 外部合同编号（线下合同编号）
     */
    private String outContractNo;

    /**
     * 上一合同ID，续约合同的时候
     */
    private Long lastContractId;

    /**
     * 上一合同编号
     */
    private String lastContractNo;

    /**
     * 商户ID
     */
    private Long businessId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门编号
     */
    private String deptNo;

    /**
     * 房源ID
     */
    private String roomId;

    /**
     * 房源编号
     */
    private String roomCode;

    /**
     * 承租房间(使用房源名称)
     */
    private String roomName;

    /**
     * 收房合同ID（没有收房合同可以录入出房合同）
     */
    private Long sfContractId;

    /**
     * 收房合同编号（没有收房合同可以录入出房合同）
     */
    private String sfContractNo;

    /**
     * 房产编号
     */
    private String houseId;

    /**
     * 房产信息(考虑在房产表中增加house_name，楼栋，单元，门牌号和居室，然后带出)
     */
    private String houseName;

    /**
     * 小区名(使用楼盘名称)
     */
    private String premiseName;

    /**
     * 居住人数(出房的时候录入)
     */
    private Integer peopleNum;

    /**
     * 租客ID
     */
    private Long tenantId;

    /**
     * 租客姓名
     */
    private String tenantName;

    /**
     * 租客手机号
     */
    private String tenantPhone;

    /**
     * 租客紧急联系号
     */
    private String tenantEmergencyPhone;

    /**
     * 租客证件号
     */
    private String tenantCardNo;

    /**
     * 租客联系地址
     */
    private String tenantContactAddress;

    /**
     * 租约期限开始日
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 租约期限结束日
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 租约期限（月）,直接选择租约期限的时候，没有选，暂时不设定
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date signingCycle;

    /**
     * 承租月租金
     */
    private BigDecimal monthRent;

    /**
     * 押金
     */
    private BigDecimal deposit;

    /**
     * 收款方式(押X付Y的X)
     */
    private Integer depositType;

    /**
     * 收款方式（押X付Y的Y）
     */
    private Integer paymentType;

    /**
     * 房租收取设置提前天数,天
     */
    private Integer advanceDays;

    /**
     * 房租收取设置固定日, 号（自然月）
     */
    private Integer fixedDay;

    /**
     * 租客承担付费(款项),各款项逗号拼接保存
     */
    private String tenantExpenses;

    /**
     * 承租类型,"0:整租（分散式）
     1:合租（分散式）
     2:单身公寓（集中式）"
     */
    private Integer signType;

    /**
     * 补充条款
     */
    private String supplementaryTerms;

    /**
     * 有无特殊人群,0:无 1:有
     */
    private Boolean haveSpecialPeople;

    /**
     * 是否房租分期,0:否 1:是
     */
    private Boolean rentInstallmentFlg;

    /**
     * 是否租约保理,0:否 1:是
     */
    private Boolean zyblFlg;

    /**
     * 合同状态,"1:草稿
     2:已提交
     3:已解约
     4:已结束
     9:作废"
     */
    private Integer contractState;

    /**
     * 续约状态,"0: 未续约
     1: 已续约"
     */
    private Integer xuyueState;

    /**
     * 冻结状态：0未冻结 1已冻结
     */
    private Boolean freezeStatus;

    /**
     * 合同录入日期,暂定设置为提交日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date inputDate;

    /**
     * 合同签订日期, 暂定设置为提交日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date signingDate;

    /**
     * 合同审核日期,暂定设置为提交日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date auditDate;

    /**
     * 合同录入人,暂定设置为创建人
     */
    private Long inputUserId;

    /**
     * 出房人,暂定设置为创建人
     */
    private Long cfUserId;

    /**
     * 出房人姓名
     */
    private String cfUserName;

    /**
     * 预留字段1
     */
    private BigDecimal reserve1;

    /**
     * 预留字段2
     */
    private Integer reserve2;

    /**
     * 预留字段3
     */
    private String reserve3;

    /**
     * 预留字段4
     */
    private String reserve4;

    /**
     * 预留字段5
     */
    private String reserve5;

    /**
     * 删除标识,0:未删除，1:删除
     */
    private Boolean delFlg;

    /**
     * 创建用户ID
     */
    private Long createUserid;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createTime;

    /**
     * 更新用户ID
     */
    private Long updateUserid;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date updateTime;
    @TableField(exist = false)
    private String t1;
    @TableField(exist = false)
    private String t2;

}
